home *** CD-ROM | disk | FTP | other *** search
/ Clickx 115 / Clickx 115.iso / software / tools / windows / tails-i386-0.16.iso / live / filesystem.squashfs / usr / bin / moggsplit < prev    next >
Encoding:
Text File  |  2010-06-11  |  2.3 KB  |  69 lines

  1. #!/usr/bin/python
  2. # Split a multiplex/chained Ogg file into its component parts.
  3. # Copyright 2006 Joe Wreschnig
  4. #
  5. # This program is free software; you can redistribute it and/or modify
  6. # it under the terms of version 2 of the GNU General Public License as
  7. # published by the Free Software Foundation.
  8. #
  9. # $Id: mutagen-inspect 3299 2006-05-18 20:58:15Z piman $
  10.  
  11. import os
  12. import sys
  13. import locale
  14.  
  15. from optparse import OptionParser
  16.  
  17. def main(argv):
  18.     from mutagen.ogg import OggPage
  19.     parser = OptionParser(
  20.         usage="%prog [options] filename.ogg ...",
  21.         description="Split Ogg logical streams using Mutagen.",
  22.         version="Mutagen %s" % ".".join(map(str, mutagen.version))
  23.         )
  24.         
  25.     parser.add_option(
  26.         "--extension", dest="extension", default="ogg", metavar='ext',
  27.         help="use this extension (default 'ogg')")
  28.     parser.add_option(
  29.         "--pattern", dest="pattern", default="%(base)s-%(stream)d.%(ext)s",
  30.         metavar='pattern', help="name files using this pattern")
  31.     parser.add_option(
  32.         "--m3u", dest="m3u", action="store_true", default=False,
  33.         help="generate an m3u (playlist) file")
  34.  
  35.     (options, args) = parser.parse_args(argv[1:])
  36.     if not args:
  37.         raise SystemExit(parser.print_help() or 1)
  38.  
  39.     format = { 'ext': options.extension }
  40.     for filename in args:
  41.         fileobjs = {}
  42.         format["base"] = os.path.splitext(os.path.basename(filename))[0]
  43.         fileobj = file(filename, "rb")
  44.         if options.m3u:
  45.             m3u = file(format["base"] + ".m3u", "w")
  46.             fileobjs["m3u"] = m3u
  47.         else:
  48.             m3u = None
  49.         while True:
  50.             try: page = OggPage(fileobj)
  51.             except EOFError: break
  52.             else:
  53.                 format["stream"] = page.serial
  54.                 if page.serial not in fileobjs:
  55.                     new_filename = options.pattern % format
  56.                     new_fileobj = file(new_filename, "wb")
  57.                     fileobjs[page.serial] = new_fileobj
  58.                     if m3u:
  59.                         m3u.write(new_filename + "\r\n")
  60.                 fileobjs[page.serial].write(page.write())
  61.         map(file.close, fileobjs.values())
  62.  
  63. if __name__ == "__main__":
  64.     try: import mutagen.ogg
  65.     except ImportError:
  66.         sys.path.append(os.path.abspath("../"))
  67.         import mutagen.ogg
  68.     main(sys.argv)
  69.